<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Reference</title>
<title>CMSIS-DSP: Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 46px;">
  <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">CMSIS-DSP
   &#160;<span id="projectnumber">Version 1.8.0</span>
   </div>
   <div id="projectbrief">CMSIS DSP Software Library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
    <ul class="tablist">
      <script type="text/javascript">
		<!--
		writeComponentTabs.call(this);
		//-->
      </script>
	  </ul>
</div>
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('modules.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all modules:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><a class="el" href="group__groupMath.html" target="_self">Basic Math Functions</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BasicAbs.html" target="_self">Vector Absolute Value</a></td><td class="desc">Computes the absolute value of a vector on an element-by-element basis </td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BasicAdd.html" target="_self">Vector Addition</a></td><td class="desc">Element-by-element addition of two vectors </td></tr>
<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__And.html" target="_self">Vector bitwise AND</a></td><td class="desc">Compute the logical bitwise AND </td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BasicDotProd.html" target="_self">Vector Dot Product</a></td><td class="desc">Computes the dot product of two vectors. The vectors are multiplied element-by-element and then summed </td></tr>
<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BasicMult.html" target="_self">Vector Multiplication</a></td><td class="desc">Element-by-element multiplication of two vectors </td></tr>
<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BasicNegate.html" target="_self">Vector Negate</a></td><td class="desc">Negates the elements of a vector </td></tr>
<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__Not.html" target="_self">Vector bitwise NOT</a></td><td class="desc">Compute the logical bitwise NOT </td></tr>
<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BasicOffset.html" target="_self">Vector Offset</a></td><td class="desc">Adds a constant offset to each element of a vector </td></tr>
<tr id="row_0_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__Or.html" target="_self">Vector bitwise inclusive OR</a></td><td class="desc">Compute the logical bitwise OR </td></tr>
<tr id="row_0_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BasicScale.html" target="_self">Vector Scale</a></td><td class="desc">Multiply a vector by a scalar value. For floating-point data, the algorithm used is: </td></tr>
<tr id="row_0_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BasicShift.html" target="_self">Vector Shift</a></td><td class="desc">Shifts the elements of a fixed-point vector by a specified number of bits. There are separate functions for Q7, Q15, and Q31 data types. The underlying algorithm used is: </td></tr>
<tr id="row_0_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BasicSub.html" target="_self">Vector Subtraction</a></td><td class="desc">Element-by-element subtraction of two vectors </td></tr>
<tr id="row_0_12_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__Xor.html" target="_self">Vector bitwise exclusive OR</a></td><td class="desc">Compute the logical bitwise XOR </td></tr>
<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><a class="el" href="group__groupFastMath.html" target="_self">Fast Math Functions</a></td><td class="desc">This set of functions provides a fast approximation to sine, cosine, and square root. As compared to most of the other functions in the CMSIS math library, the fast math functions operate on individual values and not arrays. There are separate functions for Q15, Q31, and floating-point data </td></tr>
<tr id="row_1_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__SQRT.html" target="_self">Square Root</a></td><td class="desc">Computes the square root of a number. There are separate functions for Q15, Q31, and floating-point data types. The square root function is computed using the Newton-Raphson algorithm. This is an iterative algorithm of the form: </td></tr>
<tr id="row_1_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__cos.html" target="_self">Cosine</a></td><td class="desc">Computes the trigonometric cosine function using a combination of table lookup and linear interpolation. There are separate functions for Q15, Q31, and floating-point data types. The input to the floating-point version is in radians while the fixed-point Q15 and Q31 have a scaled input with the range [0 +0.9999] mapping to [0 2*pi). The fixed-point range is chosen so that a value of 2*pi wraps around to 0 </td></tr>
<tr id="row_1_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__sin.html" target="_self">Sine</a></td><td class="desc">Computes the trigonometric sine function using a combination of table lookup and linear interpolation. There are separate functions for Q15, Q31, and floating-point data types. The input to the floating-point version is in radians while the fixed-point Q15 and Q31 have a scaled input with the range [0 +0.9999] mapping to [0 2*pi). The fixed-point range is chosen so that a value of 2*pi wraps around to 0 </td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><a class="el" href="group__groupCmplxMath.html" target="_self">Complex Math Functions</a></td><td class="desc">This set of functions operates on complex data vectors. The data in the complex arrays is stored in an interleaved fashion (real, imag, real, imag, ...). In the API functions, the number of samples in a complex array refers to the number of complex values; the array contains twice this number of real values </td></tr>
<tr id="row_2_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__cmplx__conj.html" target="_self">Complex Conjugate</a></td><td class="desc">Conjugates the elements of a complex data vector </td></tr>
<tr id="row_2_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__cmplx__dot__prod.html" target="_self">Complex Dot Product</a></td><td class="desc">Computes the dot product of two complex vectors. The vectors are multiplied element-by-element and then summed </td></tr>
<tr id="row_2_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__cmplx__mag.html" target="_self">Complex Magnitude</a></td><td class="desc">Computes the magnitude of the elements of a complex data vector </td></tr>
<tr id="row_2_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__cmplx__mag__squared.html" target="_self">Complex Magnitude Squared</a></td><td class="desc">Computes the magnitude squared of the elements of a complex data vector </td></tr>
<tr id="row_2_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__CmplxByCmplxMult.html" target="_self">Complex-by-Complex Multiplication</a></td><td class="desc">Multiplies a complex vector by another complex vector and generates a complex result. The data in the complex arrays is stored in an interleaved fashion (real, imag, real, imag, ...). The parameter <code>numSamples</code> represents the number of complex samples processed. The complex arrays have a total of <code>2*numSamples</code> real values </td></tr>
<tr id="row_2_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__CmplxByRealMult.html" target="_self">Complex-by-Real Multiplication</a></td><td class="desc">Multiplies a complex vector by a real vector and generates a complex result. The data in the complex arrays is stored in an interleaved fashion (real, imag, real, imag, ...). The parameter <code>numSamples</code> represents the number of complex samples processed. The complex arrays have a total of <code>2*numSamples</code> real values while the real array has a total of <code>numSamples</code> real values </td></tr>
<tr id="row_3_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="toggleFolder('3_')">&#9660;</span><a class="el" href="group__groupFilters.html" target="_self">Filtering Functions</a></td><td class="desc"></td></tr>
<tr id="row_3_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BiquadCascadeDF1__32x64.html" target="_self">High Precision Q31 Biquad Cascade Filter</a></td><td class="desc">This function implements a high precision Biquad cascade filter which operates on Q31 data values. The filter coefficients are in 1.31 format and the state variables are in 1.63 format. The double precision state variables reduce quantization noise in the filter and provide a cleaner output. These filters are particularly useful when implementing filters in which the singularities are close to the unit circle. This is common for low pass or high pass filters with very low cutoff frequencies </td></tr>
<tr id="row_3_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BiquadCascadeDF1.html" target="_self">Biquad Cascade IIR Filters Using Direct Form I Structure</a></td><td class="desc">This set of functions implements arbitrary order recursive (IIR) filters. The filters are implemented as a cascade of second order Biquad sections. The functions support Q15, Q31 and floating-point data types. Fast version of Q15 and Q31 also available </td></tr>
<tr id="row_3_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BiquadCascadeDF2T.html" target="_self">Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure</a></td><td class="desc">This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure. The filters are implemented as a cascade of second order Biquad sections. These functions provide a slight memory savings as compared to the direct form I Biquad filter functions. Only floating-point data is supported </td></tr>
<tr id="row_3_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__Conv.html" target="_self">Convolution</a></td><td class="desc">Convolution is a mathematical operation that operates on two finite length vectors to generate a finite length output vector. Convolution is similar to correlation and is frequently used in filtering and data analysis. The CMSIS DSP library contains functions for convolving Q7, Q15, Q31, and floating-point data types. The library also provides fast versions of the Q15 and Q31 functions </td></tr>
<tr id="row_3_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__PartialConv.html" target="_self">Partial Convolution</a></td><td class="desc">Partial Convolution is equivalent to Convolution except that a subset of the output samples is generated. Each function has two additional arguments. <code>firstIndex</code> specifies the starting index of the subset of output samples. <code>numPoints</code> is the number of output samples to compute. The function computes the output in the range <code>[firstIndex, ..., firstIndex+numPoints-1]</code>. The output array <code>pDst</code> contains <code>numPoints</code> values </td></tr>
<tr id="row_3_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__Corr.html" target="_self">Correlation</a></td><td class="desc">Correlation is a mathematical operation that is similar to convolution. As with convolution, correlation uses two signals to produce a third signal. The underlying algorithms in correlation and convolution are identical except that one of the inputs is flipped in convolution. Correlation is commonly used to measure the similarity between two signals. It has applications in pattern recognition, cryptanalysis, and searching. The CMSIS library provides correlation functions for Q7, Q15, Q31 and floating-point data types. Fast versions of the Q15 and Q31 functions are also provided </td></tr>
<tr id="row_3_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__FIR__decimate.html" target="_self">Finite Impulse Response (FIR) Decimator</a></td><td class="desc">These functions combine an FIR filter together with a decimator. They are used in multirate systems for reducing the sample rate of a signal without introducing aliasing distortion. Conceptually, the functions are equivalent to the block diagram below: </td></tr>
<tr id="row_3_7_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__FIR.html" target="_self">Finite Impulse Response (FIR) Filters</a></td><td class="desc">This set of functions implements Finite Impulse Response (FIR) filters for Q7, Q15, Q31, and floating-point data types. Fast versions of Q15 and Q31 are also provided. The functions operate on blocks of input and output data and each call to the function processes <code>blockSize</code> samples through the filter. <code>pSrc</code> and <code>pDst</code> points to input and output arrays containing <code>blockSize</code> values </td></tr>
<tr id="row_3_8_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__FIR__Lattice.html" target="_self">Finite Impulse Response (FIR) Lattice Filters</a></td><td class="desc">This set of functions implements Finite Impulse Response (FIR) lattice filters for Q15, Q31 and floating-point data types. Lattice filters are used in a variety of adaptive filter applications. The filter structure is feedforward and the net impulse response is finite length. The functions operate on blocks of input and output data and each call to the function processes <code>blockSize</code> samples through the filter. <code>pSrc</code> and <code>pDst</code> point to input and output arrays containing <code>blockSize</code> values </td></tr>
<tr id="row_3_9_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__FIR__Sparse.html" target="_self">Finite Impulse Response (FIR) Sparse Filters</a></td><td class="desc">This group of functions implements sparse FIR filters. Sparse FIR filters are equivalent to standard FIR filters except that most of the coefficients are equal to zero. Sparse filters are used for simulating reflections in communications and audio applications </td></tr>
<tr id="row_3_10_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__IIR__Lattice.html" target="_self">Infinite Impulse Response (IIR) Lattice Filters</a></td><td class="desc">This set of functions implements lattice filters for Q15, Q31 and floating-point data types. Lattice filters are used in a variety of adaptive filter applications. The filter structure has feedforward and feedback components and the net impulse response is infinite length. The functions operate on blocks of input and output data and each call to the function processes <code>blockSize</code> samples through the filter. <code>pSrc</code> and <code>pDst</code> point to input and output arrays containing <code>blockSize</code> values </td></tr>
<tr id="row_3_11_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__LMS.html" target="_self">Least Mean Square (LMS) Filters</a></td><td class="desc">LMS filters are a class of adaptive filters that are able to "learn" an unknown transfer functions. LMS filters use a gradient descent method in which the filter coefficients are updated based on the instantaneous error signal. Adaptive filters are often used in communication systems, equalizers, and noise removal. The CMSIS DSP Library contains LMS filter functions that operate on Q15, Q31, and floating-point data types. The library also contains normalized LMS filters in which the filter coefficient adaptation is indepedent of the level of the input signal </td></tr>
<tr id="row_3_12_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__LMS__NORM.html" target="_self">Normalized LMS Filters</a></td><td class="desc">This set of functions implements a commonly used adaptive filter. It is related to the Least Mean Square (LMS) adaptive filter and includes an additional normalization factor which increases the adaptation rate of the filter. The CMSIS DSP Library contains normalized LMS filter functions that operate on Q15, Q31, and floating-point data types </td></tr>
<tr id="row_3_13_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__FIR__Interpolate.html" target="_self">Finite Impulse Response (FIR) Interpolator</a></td><td class="desc">These functions combine an upsampler (zero stuffer) and an FIR filter. They are used in multirate systems for increasing the sample rate of a signal without introducing high frequency images. Conceptually, the functions are equivalent to the block diagram below: </td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_4_" class="arrow" onclick="toggleFolder('4_')">&#9660;</span><a class="el" href="group__groupMatrix.html" target="_self">Matrix Functions</a></td><td class="desc">This set of functions provides basic matrix math operations. The functions operate on matrix data structures. For example, the type definition for the floating-point matrix structure is shown below: </td></tr>
<tr id="row_4_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__MatrixAdd.html" target="_self">Matrix Addition</a></td><td class="desc">Adds two matrices </td></tr>
<tr id="row_4_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__CmplxMatrixMult.html" target="_self">Complex Matrix Multiplication</a></td><td class="desc">Complex Matrix multiplication is only defined if the number of columns of the first matrix equals the number of rows of the second matrix. Multiplying an <code>M x N</code> matrix with an <code>N x P</code> matrix results in an <code>M x P</code> matrix </td></tr>
<tr id="row_4_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__MatrixInit.html" target="_self">Matrix Initialization</a></td><td class="desc">Initializes the underlying matrix data structure. The functions set the <code>numRows</code>, <code>numCols</code>, and <code>pData</code> fields of the matrix data structure </td></tr>
<tr id="row_4_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__MatrixInv.html" target="_self">Matrix Inverse</a></td><td class="desc">Computes the inverse of a matrix </td></tr>
<tr id="row_4_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__MatrixMult.html" target="_self">Matrix Multiplication</a></td><td class="desc">Multiplies two matrices </td></tr>
<tr id="row_4_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__MatrixScale.html" target="_self">Matrix Scale</a></td><td class="desc">Multiplies a matrix by a scalar. This is accomplished by multiplying each element in the matrix by the scalar. For example: </td></tr>
<tr id="row_4_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__MatrixSub.html" target="_self">Matrix Subtraction</a></td><td class="desc">Subtract two matrices </td></tr>
<tr id="row_4_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__MatrixTrans.html" target="_self">Matrix Transpose</a></td><td class="desc">Tranposes a matrix </td></tr>
<tr id="row_5_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_5_" class="arrow" onclick="toggleFolder('5_')">&#9660;</span><a class="el" href="group__groupTransforms.html" target="_self">Transform Functions</a></td><td class="desc"></td></tr>
<tr id="row_5_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_5_0_" class="arrow" onclick="toggleFolder('5_0_')">&#9658;</span><a class="el" href="group__ComplexFFT.html" target="_self">Complex FFT Functions</a></td><td class="desc"></td></tr>
<tr id="row_5_0_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a class="el" href="group__CFFT__CIFFT.html" target="_self">Complex FFT Tables</a></td><td class="desc"></td></tr>
<tr id="row_5_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_5_1_" class="arrow" onclick="toggleFolder('5_1_')">&#9658;</span><a class="el" href="group__DCT4__IDCT4.html" target="_self">DCT Type IV Functions</a></td><td class="desc">Representation of signals by minimum number of values is important for storage and transmission. The possibility of large discontinuity between the beginning and end of a period of a signal in DFT can be avoided by extending the signal so that it is even-symmetric. Discrete Cosine Transform (DCT) is constructed such that its energy is heavily concentrated in the lower part of the spectrum and is very widely used in signal and image coding applications. The family of DCTs (DCT type- 1,2,3,4) is the outcome of different combinations of homogeneous boundary conditions. DCT has an excellent energy-packing capability, hence has many applications and in data compression in particular </td></tr>
<tr id="row_5_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a class="el" href="group__DCT4__IDCT4__Table.html" target="_self">DCT Type IV Tables</a></td><td class="desc"></td></tr>
<tr id="row_5_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_5_2_" class="arrow" onclick="toggleFolder('5_2_')">&#9658;</span><a class="el" href="group__RealFFT.html" target="_self">Real FFT Functions</a></td><td class="desc"></td></tr>
<tr id="row_5_2_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a class="el" href="group__RealFFT__Table.html" target="_self">Real FFT Tables</a></td><td class="desc"></td></tr>
<tr id="row_6_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_6_" class="arrow" onclick="toggleFolder('6_')">&#9660;</span><a class="el" href="group__groupController.html" target="_self">Controller Functions</a></td><td class="desc"></td></tr>
<tr id="row_6_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__PID.html" target="_self">PID Motor Control</a></td><td class="desc">A Proportional Integral Derivative (PID) controller is a generic feedback control loop mechanism widely used in industrial control systems. A PID controller is the most commonly used type of feedback controller </td></tr>
<tr id="row_6_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__clarke.html" target="_self">Vector Clarke Transform</a></td><td class="desc">Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector. Generally the Clarke transform uses three-phase currents <code>Ia, Ib and Ic</code> to calculate currents in the two-phase orthogonal stator axis <code>Ialpha</code> and <code>Ibeta</code>. When <code>Ialpha</code> is superposed with <code>Ia</code> as shown in the figure below </td></tr>
<tr id="row_6_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__inv__clarke.html" target="_self">Vector Inverse Clarke Transform</a></td><td class="desc">Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases </td></tr>
<tr id="row_6_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__park.html" target="_self">Vector Park Transform</a></td><td class="desc">Forward Park transform converts the input two-coordinate vector to flux and torque components. The Park transform can be used to realize the transformation of the <code>Ialpha</code> and the <code>Ibeta</code> currents from the stationary to the moving reference frame and control the spatial relationship between the stator vector current and rotor flux vector. If we consider the d axis aligned with the rotor flux, the diagram below shows the current vector and the relationship from the two reference frames: </td></tr>
<tr id="row_6_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__inv__park.html" target="_self">Vector Inverse Park transform</a></td><td class="desc">Inverse Park transform converts the input flux and torque components to two-coordinate vector </td></tr>
<tr id="row_6_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__SinCos.html" target="_self">Sine Cosine</a></td><td class="desc">Computes the trigonometric sine and cosine values using a combination of table lookup and linear interpolation. There are separate functions for Q31 and floating-point data types. The input to the floating-point version is in degrees while the fixed-point Q31 have a scaled input with the range [-1 0.9999] mapping to [-180 +180] degrees </td></tr>
<tr id="row_7_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_7_" class="arrow" onclick="toggleFolder('7_')">&#9660;</span><a class="el" href="group__groupStats.html" target="_self">Statistics Functions</a></td><td class="desc"></td></tr>
<tr id="row_7_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__Max.html" target="_self">Maximum</a></td><td class="desc">Computes the maximum value of an array of data. The function returns both the maximum value and its position within the array. There are separate functions for floating-point, Q31, Q15, and Q7 data types </td></tr>
<tr id="row_7_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__mean.html" target="_self">Mean</a></td><td class="desc">Calculates the mean of the input vector. Mean is defined as the average of the elements in the vector. The underlying algorithm is used: </td></tr>
<tr id="row_7_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__Min.html" target="_self">Minimum</a></td><td class="desc">Computes the minimum value of an array of data. The function returns both the minimum value and its position within the array. There are separate functions for floating-point, Q31, Q15, and Q7 data types </td></tr>
<tr id="row_7_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__power.html" target="_self">Power</a></td><td class="desc">Calculates the sum of the squares of the elements in the input vector. The underlying algorithm is used: </td></tr>
<tr id="row_7_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__RMS.html" target="_self">Root mean square (RMS)</a></td><td class="desc">Calculates the Root Mean Square of the elements in the input vector. The underlying algorithm is used: </td></tr>
<tr id="row_7_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__STD.html" target="_self">Standard deviation</a></td><td class="desc">Calculates the standard deviation of the elements in the input vector </td></tr>
<tr id="row_7_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__variance.html" target="_self">Variance</a></td><td class="desc">Calculates the variance of the elements in the input vector. The underlying algorithm used is the direct method sometimes referred to as the two-pass method: </td></tr>
<tr id="row_8_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_8_" class="arrow" onclick="toggleFolder('8_')">&#9660;</span><a class="el" href="group__groupSupport.html" target="_self">Support Functions</a></td><td class="desc"></td></tr>
<tr id="row_8_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__Sorting.html" target="_self">Vector sorting algorithms</a></td><td class="desc">Sort the elements of a vector </td></tr>
<tr id="row_8_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__copy.html" target="_self">Vector Copy</a></td><td class="desc">Copies sample by sample from source vector to destination vector </td></tr>
<tr id="row_8_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__Fill.html" target="_self">Vector Fill</a></td><td class="desc">Fills the destination vector with a constant value </td></tr>
<tr id="row_8_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__float__to__x.html" target="_self">Convert 32-bit floating point value</a></td><td class="desc"></td></tr>
<tr id="row_8_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__q15__to__x.html" target="_self">Convert 16-bit Integer value</a></td><td class="desc"></td></tr>
<tr id="row_8_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__q31__to__x.html" target="_self">Convert 32-bit Integer value</a></td><td class="desc"></td></tr>
<tr id="row_8_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__q7__to__x.html" target="_self">Convert 8-bit Integer value</a></td><td class="desc"></td></tr>
<tr id="row_8_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__SplineInterpolate.html" target="_self">Cubic Spline Interpolation</a></td><td class="desc">Spline interpolation is a method of interpolation where the interpolant is a piecewise-defined polynomial called "spline" </td></tr>
<tr id="row_9_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_9_" class="arrow" onclick="toggleFolder('9_')">&#9660;</span><a class="el" href="group__groupInterpolation.html" target="_self">Interpolation Functions</a></td><td class="desc">These functions perform 1- and 2-dimensional interpolation of data. Linear interpolation is used for 1-dimensional data and bilinear interpolation is used for 2-dimensional data </td></tr>
<tr id="row_9_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__LinearInterpolate.html" target="_self">Linear Interpolation</a></td><td class="desc">Linear interpolation is a method of curve fitting using linear polynomials. Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line </td></tr>
<tr id="row_9_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BilinearInterpolate.html" target="_self">Bilinear Interpolation</a></td><td class="desc">Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid. The underlying function <code>f(x, y)</code> is sampled on a regular grid and the interpolation process determines values between the grid points. Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension. Bilinear interpolation is often used in image processing to rescale images. The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types </td></tr>
<tr id="row_10_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_10_" class="arrow" onclick="toggleFolder('10_')">&#9660;</span><a class="el" href="group__groupExamples.html" target="_self">Examples</a></td><td class="desc"></td></tr>
<tr id="row_10_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BayesExample.html" target="_self">Bayes Example</a></td><td class="desc"></td></tr>
<tr id="row_10_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__ClassMarks.html" target="_self">Class Marks Example</a></td><td class="desc"></td></tr>
<tr id="row_10_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__ConvolutionExample.html" target="_self">Convolution Example</a></td><td class="desc"></td></tr>
<tr id="row_10_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__DotproductExample.html" target="_self">Dot Product Example</a></td><td class="desc"></td></tr>
<tr id="row_10_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__FrequencyBin.html" target="_self">Frequency Bin Example</a></td><td class="desc"></td></tr>
<tr id="row_10_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__FIRLPF.html" target="_self">FIR Lowpass Filter Example</a></td><td class="desc"></td></tr>
<tr id="row_10_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__GEQ5Band.html" target="_self">Graphic Audio Equalizer Example</a></td><td class="desc"></td></tr>
<tr id="row_10_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__LinearInterpExample.html" target="_self">Linear Interpolate Example</a></td><td class="desc"><b> CMSIS DSP Software Library &ndash; Linear Interpolate Example </b> </td></tr>
<tr id="row_10_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__MatrixExample.html" target="_self">Matrix Example</a></td><td class="desc"></td></tr>
<tr id="row_10_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__SignalConvergence.html" target="_self">Signal Convergence Example</a></td><td class="desc"></td></tr>
<tr id="row_10_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__SinCosExample.html" target="_self">SineCosine Example</a></td><td class="desc"></td></tr>
<tr id="row_10_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__SVMExample.html" target="_self">SVM Example</a></td><td class="desc"></td></tr>
<tr id="row_10_12_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__VarianceExample.html" target="_self">Variance Example</a></td><td class="desc"></td></tr>
<tr id="row_11_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__groupSVM.html" target="_self">SVM Functions</a></td><td class="desc">This set of functions is implementing SVM classification on 2 classes. The training must be done from scikit-learn. The parameters can be easily generated from the scikit-learn object. Some examples are given in DSP/Testing/PatternGeneration/SVM.py </td></tr>
<tr id="row_12_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__groupBayes.html" target="_self">Bayesian estimators</a></td><td class="desc">Implement the naive gaussian Bayes estimator. The training must be done from scikit-learn </td></tr>
<tr id="row_13_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_13_" class="arrow" onclick="toggleFolder('13_')">&#9660;</span><a class="el" href="group__groupDistance.html" target="_self">Distance functions</a></td><td class="desc">Distance functions for use with clustering algorithms. There are distance functions for float vectors and boolean vectors </td></tr>
<tr id="row_13_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__FloatDist.html" target="_self">Float Distances</a></td><td class="desc">Distances between two vectors of float values </td></tr>
<tr id="row_13_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__BoolDist.html" target="_self">Boolean Distances</a></td><td class="desc">Distances between two vectors of boolean values </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Tue Mar 17 2020 15:01:25 for CMSIS-DSP Version 1.8.0 by Arm Ltd. All rights reserved.
	<!--
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 
	-->
	</li>
  </ul>
</div>
</body>
</html>
